package main.flex.helper
{
	import flash.events.Event;
	
	import main.flex.control.MainController;
	import main.flex.model.MainModel;
	import main.flex.value.UserListTO;
	import main.flex.view.MainView;
	
	import mx.controls.Alert;
	
	import org.servebox.foundry.model.ModelLocator;
	import org.servebox.foundry.observation.IObservable;
	import org.servebox.foundry.observation.Notification;
	import org.servebox.foundry.view.ViewHelper;

	public class MainViewHelper extends ViewHelper
	{	
		[Bindable]
		public var visioViewVisibility : Boolean = false;
		
		public function MainViewHelper()
		{
			super();
		}
		
		override public function registerToModels() : void
		{
			ModelLocator.getInstance().getModel( MainController.MAIN_MODEL_ID ).registerObserver( this );
		}
		
		public function initDatas():void
		{
			MainController.getInstance().getSessionInfo();
		}
		
		// je laisse ici les méthodes de log car elles sont communes à toutes l'appli
		// elles pourront donc être utilisées dans les différents ViewHelper
		// qui devront tous étendre cette classe
		
		[Bindable("userLogged")]
		public function get user() : UserListTO
		{
			return getMainModel().user;
		}
		
		// Notifications
		
		public function userLoggedNotification_Fired( o : IObservable, n :Notification ) : void
		{
			dispatchEvent( new Event("userLogged") );
			//trace("userLoggedNotification received.");
			if(user.user[0].loggedIn == "true"){
				//Alert.show("Bienvenue " + user.user[0].name + " " + user.user[0].surname ,"Bienvenue : ");
				getCurrentView().currentState = "welcome";
				visioViewVisibility = true;
			}else{
				//Alert.show( "Merci de vous identifier..." ,"Identification :");	
				getCurrentView().currentState = "";
				if(user.user[0].userId == "-1"){
					Alert.show( "Votre mot de passe ou votre login est erroné..." ,"Identification : ");
				}	
			}
		}
		
		public function toLoggIn():void
		{
			//Alert.show(getCurrentView().loggin.text + ' ' + getCurrentView().pwd.text ,"");
			var login : String = getCurrentView().loggin.text;
			var mdp : String = getCurrentView().pwd.text;
			MainController.getInstance().connectUser( login, mdp );
		}
		
		// Shortcuts
		
		/**
		* return a reference to MainModel
		*/
		
		protected function getMainModel() : MainModel
		{
			return MainModel ( ModelLocator.getInstance().getModel( MainController.MAIN_MODEL_ID ));
		}
		
		private function getCurrentView( ) : MainView
		{
			return MainView( getView() );
		}
	}
}